﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ClienteService.cs" company="BS - Desenvolvemento">
//   Desenvolvimento de solucoes tecnologicas para automacao em geral
// </copyright>
// <summary>
//   A classe de servico do cliente.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace ProjetoModeloDDD.Domain.Services
{
    using ProjetoModeloDDD.Domain.Entities;
    using ProjetoModeloDDD.Domain.Interfaces.Repositories;
    using ProjetoModeloDDD.Domain.Interfaces.Services;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;

    /// <summary>
    /// A classe de servico do cliente.
    /// </summary>
    public class ClienteService : ServiceBase<Cliente>, IClienteService
    {
        /// <summary>
        /// o atributo de repositorio do cliente.
        /// </summary>
        private readonly IClienteRepository _clienteRepository;

        /// <summary>
        /// Inicia uma nova instância da classe <see cref="ClienteService"/>.
        /// </summary>
        /// <param name="clienteRepository">
        /// O repositorio de cliente.
        /// </param>
        public ClienteService(IClienteRepository clienteRepository)
            : base(clienteRepository)
        {
            this._clienteRepository = clienteRepository;
        }

        /// <summary>
        /// The obter clientes especiais.
        /// </summary>
        /// <param name="clientes">
        /// The clientes.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable"/>.
        /// </returns>
        public IEnumerable<Cliente> ObterClientesEspeciais(System.Collections.Generic.IEnumerable<Cliente> clientes)
        {
            return clientes.Where(c => c.ClienteEspecial(c));
        }
    }
}